from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from common.Utils import BlogDriver
#测试博客详情页

class BlogDeail:
    url = ""
    driver = ""
    def __init__(self, url):
        #这个博客网页的博客会被定时清除，所以，根据博客id访问，博客，过段时间博客清除了就需要换url，博客列表页也是一样
        self.url = url
        self.driver =BlogDriver.driver
        self.driver.get(self.url)
    #登陆状态下博客详情页的测试
    def DetailTestByLogin(self):
        # 添加等待，确保页面加载完成
        wait = WebDriverWait(self.driver, 2)
        # 处理可能的警告框（如内部错误）
        try:
            alert = wait.until(EC.alert_is_present())
            print(f"处理警告框: {alert.text}")
            alert.accept()
            self.driver.refresh()  # 刷新页面
        except:
            pass
        # 等待博客标题元素出现
        wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, "body > div.container > div.right > div > div.title")))
        #标题
        self.driver.find_element(By.CSS_SELECTOR, "body > div.container > div.right > div > div.title")
        #时间
        self.driver.find_element(By.CSS_SELECTOR, "body > div.container > div.right > div > div.date")
        #内容
        self.driver.find_element(By.CSS_SELECTOR, "#detail")
        #按钮
        # 删除按钮在想这个要怎么验证，验证不了，没有删除成功提示，和查找框，
        # 页面结构变化：点击编辑按钮后，页面跳转到了博客编辑页，而编辑页可能没有与详情页相同的删除按钮。
        self.driver.find_element(By.CSS_SELECTOR, "body > div.container > div.right > div > div.operating > button:nth-child(2)")
        #编辑按钮,点击一下，然后看是否进入编辑页
        self.driver.find_element(By.CSS_SELECTOR, "body > div.container > div.right > div > div.operating > button:nth-child(1)").click()
        # 每次进入一个新页面就要显示等待一下
        wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, "#title")))
        #因为是同一个页面，进入新的界面之后还是之前的窗口，所以不用更新driver
        # 获取输入框的当前值（包括用户输入的内容）
        text = self.driver.find_element(By.CSS_SELECTOR, "#submit").get_attribute("value")
        print(f"提交按钮文本: {text}")

        #截图

